/*
 * Copyright/Licensing information.
 */

/* inclusion guard */
#ifndef __ECV_FILTER_LTD_H__
#define __ECV_FILTER_LTD_H__

/*
 * Glib includes
 */
#include <glib-object.h>
//#include <gio.h>

/*
 * Potentially, include other headers on which this header depends.
 */

#include "ecv_filter.h"
#include "ecv_filter_convhough.h"

#include <stdio.h>

/*
 * Type macros.
 */
#define ECV_TYPE_FILTER_LTD                  (ecv_filter_ltd_get_type ())
#define ECV_FILTER_LTD(obj)                  (G_TYPE_CHECK_INSTANCE_CAST ((obj), ECV_TYPE_FILTER_LTD, EcvFilter_Ltd))
#define ECV_IS_FILTER_LTD(obj)               (G_TYPE_CHECK_INSTANCE_TYPE ((obj), ECV_TYPE_FILTER_LTD))
#define ECV_FILTER_LTD_CLASS(klass)          (G_TYPE_CHECK_CLASS_CAST ((klass), ECV_TYPE_FILTER_LTD, EcvFilter_LtdClass))
#define ECV_IS_FILTER_LTD_CLASS(klass)       (G_TYPE_CHECK_CLASS_TYPE ((klass), ECV_TYPE_FILTER_LTD))
#define ECV_FILTER_LTD_GET_CLASS(obj)        (G_TYPE_INSTANCE_GET_CLASS ((obj), ECV_TYPE_FILTER_LTD, EcvFilter_LtdClass))

typedef struct _EcvFilter_Ltd        EcvFilter_Ltd;
typedef struct _EcvFilter_LtdClass   EcvFilter_LtdClass;
typedef struct _EcvFilter_LtdPrivate EcvFilter_LtdPrivate;

struct _EcvFilter_Ltd
{
  EcvFilter parent_instance;

  /*< public >*/


  /*< private >*/
  EcvFilter_LtdPrivate *priv;
};

struct _EcvFilter_LtdClass
{
  GObjectClass parent_class;

  /* class members */
  /*< public >*/


  //------------------------------------------------
  /*                   virtual                    */
  void (*create) (EcvFilter_Ltd *self);
  void (*process) (EcvFilter_Ltd *self);
};

/* used by ECV_TYPE_FILTER_LTD */
GType ecv_filter_ltd_get_type (void);

/*
 * Method definitions.
 */

void ecv_filter_ltd_preparetodraw(EcvFilter_Ltd *self);
void ecv_filter_ltd_setlines(EcvFilter_Ltd *self, GHashTable * lines);

EcvFilter_Ltd * 
ecv_filter_ltd_new (int width, int height, int bpp);

#endif /* __ECV_FILTER_LTD_H__ */
